nwnfandomcom-20200213-history
Grimoire underwater rules
Feature Overview This feature is currently in development and is not activated in the currently available download. These rules are a compilation of ideas from the AD&D 2nd Edition Complete Wizard's Handbook, the D&D 3.0 Edition Dungeon Master's Guide, and some input from a diver on how loud explosions and sonar affect divers in water. Underwater casting rules will allow for changes to spells when casting in an underwater environment. This feature has been tested and does work. Casting Rules # Any spells that cannot be cast underwater should be denoted as such in their respective descriptions. # Fire spells must succeed at a Spellcraft check vs a DC of 20 + the spell level. # Acid and Fog type duration spells have their durations reduced by one factor (hours to turns, turns to rounds, rounds to 1 round) due to dilution in the water. # Sonic spells have their damage increased one and a half times, and, if an explosive type spell, its area of effect increased to twice the normal size due to how water conducts sound and pressure waves. # Depending on the spell, electrical spells may cause an area-of-effect shock due to conductivity in water. For example, a lightning bolt will cause a fireball-like blast of electricity instead of the usual bolt. # Summon Creature spells should only summon creatures that can function underwater. Since there currently aren't any underwater creatures that can be summoned, these spells will not work underwater. * These rules are still subject to change. Development Notes # spells.2da was updated to include column UndWater. This determines if the spell can be cast underwater. It takes 2 values. ## 1 - the spell may be cast ## 0 - this spell cannot be cast underwater # new include file: sg_inc_undwater.nss ## new function: int SGGetIsUnderwater(object oCaster=OBJECT_SELF); ##* checks for a local int variable UNDERWATER on either the caster or the area the caster is in ##* builders can include this file to use this function in heartbeats to do checks for Water Breathing spells, etc. ## new function: int SGCheckUndWaterFireSuccess(int iElementalType, object oCaster=OBJECT_SELF); ##* checks if spell is a fire spell ##* if so, must succeed a spellcraft check vs DC 20+spell level ## new function: int SGAdjUndWaterSonicDmg(int iDamage, int iElementalType); ##* checks local module float variable SG_UNDW_SONIC_MULT to see if a new multiplier has been specified ##* if elemental type is sonic, multiplies damage by multiplier (either const or custom) # sg_spellhook.nss was changed to do the following: ## Check if caster is underwater, using function SGGetIsUnderwater. ## if so, read the UndWater value for the spell from spells.2da ## if 0, stop ## if 1, continue script #* also included is a check for AOEs firing their scripts # sg_inc_wrappers.nss was changed as follows ## function SGMaximizeOrEmpower was changed to check for underwater conditions and call SGAdjUndWaterSonicDmg if a sonic spell to adjust the damage. # new function found in sg_inc_utils: float SGGetDuration(int iNumber, int iDurationType=DUR_TYPE_ROUNDS, int iElementalType=DAMAGE_TYPE_MAGICAL, int iFogSpell=FALSE); #* This function does checking for reduction of duration underwater. It also passes back the proper duration for normal circumstances. #* iNumber is the number of rounds, turns, hours, etc. #* iDuration type takes the following values: DUR_TYPE_ROUNDS, DUR_TYPE_TURNS, DUR_TYPE_HOURS, DUR_TYPE_DAYS #* iElementalType should be passed a DAMAGE_TYPE_x constant for one of the energy types, or DAMAGE_TYPE_MAGICAL if it is not dependent upon an energy type #* iFogSpell is either TRUE or FALSE. This is just a flag as to whether the spell should be considered a fog spell for underwater purposes. # all spell scripts were updated to use SGGetDuration Category:Grimoire development Category:Grimoire features